package top.leinx.fxnotes.pane;

/**
 * @Author : xiaolei
 * @DateTime: 2021/3/19 2:32 下午
 */

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class FlowPaneExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        FlowPane flowPane = new FlowPane(5.0, 10.0); // 创建带有间隔的FlowPane对象
        // 设置为水平排列，水平排列是默认值，可以不设置
        flowPane.setOrientation(Orientation.HORIZONTAL);
        // 设置为垂直排列
        // flowPane.setOrientation(Orientation.VERTICAL);

        // 创建30个按钮对象并添加的 flowPane 中
        for (int i = 0; i < 30; i++) {
            Button b = new Button(String.format("Button-%02d", i));
            flowPane.getChildren().add(b);
        }

        // 创建一个滚动窗格
        ScrollPane sp = new ScrollPane();
        // sp.setFitToHeight(true);  // 垂直排列时使用，保证不出现垂直滚动条，子组件能正常换列
        sp.setFitToWidth(true);  // 水平排列时使用，保证不出现水平滚动条，子组件能正常换行
        sp.setContent(flowPane); // 把 flowPane 放进滚动窗格
        sp.setVbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);
        sp.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED);

        primaryStage.setTitle("FlowPane 示例");
        primaryStage.setScene(new Scene(sp, 300, 200));
        primaryStage.show();
    }
}
